Instructiuni.

1.Codificarea instructiunilor
Orice program executabil consta dintr o secventa de instructiuni acceptabile de catre masina. Orice instructiune masina contine doua tipuri de informatie: operatia ce urmeaza a se executa si unde anume se localizeaza   in registre sau memorie   rezultatul operatiei. De regula aceste informatii sint codificate in cimpuri diferite ale instructiunii, asa ca numarul de cimpuri ale unei instructiuni este in general, de trei. O instructiune are structura urmatoare : 
a)codul operatiei ce se executa (opcode);
b)specificarea modului de adresare pentru operanzii de intrare si pentru rezultat ;
c)datele ce se utilizeaza in calculul adresei de catre modurile de adresare specificate.
Instructiunile masina au diferite lungimi, depinzind de numarul de operanzi si modurile de adresare utilizate. Numarul de operanzi ce se specifica trebuie mentinut la o valoare cit de mica pentru a lucra cu instructiuni de dimensiuni mici. Daca operatia efectuata de catre o instructiune necesita n operanzi de intrare pentru a produce un rezultat, este necesara specificarea a n+1 moduri de adresare si a unui numar de pina la n+1 deplasamente.
Un mod uzual de scurtare a lungimii medii a instructiunii este cel in care unul din operanzii de intrare este folosit si ca destinatia rezultatului. Aceasta solutie limiteaza capacitatea de adresare prin fortarea stocarii rezultatului la adresa unuia din operanzii de intrare, dar are ca efect o importanta reducere a consumului de memorie.
Un studiu efectuat asupra limbajului Fortran [4] a indicat ca majoritatea instructiunilor de asignare sint de forma A:=A op B, unde op reprezinta operatia efectuata cu cei doi operanzi A si B. Din aceste motive,toate microprocesoarele,cu exceptia lui VAX 11,
folosesc adresa unuia din operanzii de intrare pentru memorarea rezultatului. VAX 11 are instructiuni cu trei adrese pentru operatii implicind doua intrari. 

2.Ortogonalitate
Modurile de adresare si seturile de instructiuni se numesc ortogonale cind procesorul permite orice combinatie posibila de moduri de adresare si coduri de operatii, cu exceptia acelor combinatii care sint lipsite de sens. Ortogonalitatea este o caracteristica de dorit a instructiunilor, intrucit ea simplifica activitatea generatorului de cod al compilatorului prin evitarea folosirii de restrictii asupra combinatiilor cod al operatiei   mod de adresare. In acelasi timp ortogonalitatea conduce la cresterea lungimii medii a instructiunii. Cresterea este impusa de necesitatea prevederii unor cimpuri de biti de lungime fixa, independenta de modul de adresare, pentru specificarea modului de adresare pentru fiecare operand al instructiunii. Se mai adauga si posibilitatea mai multor operanzi imediati, adrese sau deplasamente in instructiune.
La microprocesoarele de 8 sau 16 biti s a adoptat conventia ca unul din operanzi sa fie continut de un registru al unitatii centrale, celalalt fiind adresat in orice mod posibil. Solutia are avantajul ca adresa operandului din registru se specifica simplu, prin numarul registrului respectiv. De asemenea, numarul de operanzi imediati, adrese sau deplasamente intr o instructiune se reduce la unu. 
Se mai pot da si alte solutii: numai un subset de instructiuni (de exemplu cele folosite pentru transferul datelor) poate utiliza toate modurile de adresare, in timp ce restul instructiunilor folosesc numai combinatii permise.
Desi ortogonalitatea este o caracteristica dezirabila, seturile de instructiuni ale microprocesoarelor existente se abat   in masura mai mica sau mai mare   de la cerintele ei, fapt ce conduce la cod mai compact, dar si la mai mari dificultati de realizare a compilatoarelor cu optimizare.

3.Operatii speciale
Instructiuni care faciliteaza implementarea de operatii tipice programelor scrise in limbaje de nivel inalt. Desi aceste instructiuni nu sint singurii factori care contribuie la eficienta de rulare a programelor, ele se refera la un set de operatii caracteristice programelor scrise in limbaje de nivel inalt si care se regasesc in alte tipuri de programe.
3.1.Apeluri de proceduri
In cadrul mecanismelor de apelare a procedurii intr un limbaj permitind programarea recursiva se disting mai multe faze:
-alocarea de memorie pentru noul cadru;
-construirea noului cimp de afisare prin copierea valorilor corespunzatoare din cadrul programului sau procedurii chematoare si adaugarea unui nou indicator (daca procedura apelata este definita in interiorul celei chematoare);
-saltul la subrutina;
-salvarea in zona dedicata a contextului, adica a continuturilor acelor registre care sint utilizate de catre procedura apelata.
Doar saltul la subrutina se afla in setul de instructiuni al oricarui microprocesor, chiar si al celor din epoca de inceput. Microprocesoarele recent elaborate sint prevazute cu instructiuni suplimentare, care sa ofere suport pentru toate fazele de apelare a procedurii.

3.2.Referirea elementelor matricilor
Metodele de alocare si acces la elementele unei matrici multidimensionale au fost prezentate intr un paragraf anterior, in care s a indicat si un algoritm iterativ pentru evaluarea in n pasi adresa unui element al unei matrici cu n dimensiuni, calcul necesitind valorile indicilor elementului referit. In cele ce urmeaza sint prezentate unele elemente legate de testarea incadrarii in limitele impuse a valorii unui indice al elementului matricii. Daca asemenea teste se pot face cu consumuri mici de resurse, in special timp, ele sint de recomandat, deoarece au ca efect cresterea fiabilitatii programelor prin eliminarea operatiilor de acces la elemente inexistente.
S-a indicat posibilitatea transformarii de catre compilator a unui set de n indici intr un numar k cuprins intre 0 si M 1, unde M este produsul numerelor de valori ale fiecaruia din cei n indici. Microprocesoarele moderne permit testarea valorii k prin compararea sa cu M 1, iar unele din acestea testeaza si semnul lui k (cele doua limite, 0 si M 1, sint parametri  ai instructiunii de testare). In aceasta a doua categorie intra procesoarele Z8000 si VAX 11. In plus  iAPX 286 face, in aceeasi instructiune, atit evaluarea lui m, cit si testarea incadrarii sale sub limita superioara.